/*
******************
* author: 马丰彦
* date: 2019-06-17
* function: 登录验证、权限校验、重定向拦截器
******************
*/

import router from './router'
import store from './store/index'
import NProgress from 'nprogress' // Progress 进度条
import 'nprogress/nprogress.css'// Progress 进度条样式
import { Message } from 'element-ui'
import { getToken, removeToken } from '@/utils/auth' // 验权

const whiteList = ['/login'] // 不重定向白名单
// 进行路由校验判断
router.beforeEach((to, from, next) => {
  NProgress.start()
  // 如果有缓存token
  if (getToken()) {
    // 如果要去登录页，不让去
    /* if (to.path === '/login') {
      next({ path: '/' })
      NProgress.done()
    } else { */
    // 进行权限判断
    if (store.getters.roles.length === 0) {
      store.dispatch('GetUserPower').then(roles => {
        if (roles.length > 0) {
          next()
        } else {
          Message.error('你没有权限登录本系统')
          removeToken()
          next(`/login`) // 否则全部重定向到登录页
        }
      }).catch(err => {
        console.log(err)
        Message.error(err)
        store.dispatch('FedLogOut').then(() => {
          /* Message.error(err || '请重新登录')*/
          next({ path: '/' })
        })
      })
    } else {
      next()
    }
    // }
  } else {
    // 排除当前登录页
    if (whiteList.indexOf(to.path) !== -1) {
      next()
    } else {
      next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页
      NProgress.done()
    }
  }
})

router.afterEach(() => {
  NProgress.done() // 结束Progress
})
